Nobody On This Chart Chose A Language
Twenty-two of the biggest games in the world, three columns: the game, the main language, the engine. It is the kind of chart that gets saved by everyone who has ever wondered what you would actually need to learn to build something like that.
So read the middle column properly. C++, C++, C++, C++. It appears in roughly twenty of the twenty-two rows. As a guide to what makes these games different from each other, that column is almost useless — it barely moves.
Now read the right-hand column. RenderWare. RAGE. Custom engine. Unreal. IW Engine. Roblox Engine. Source 2. Unity. Supercell Titan. That is the column where the decisions live, and once you notice it the chart says something different from what it appears to say.
Nobody on this list sat down and picked a programming language. They picked an engine — or inherited one, or wrote one — and the language came with it. C# does not appear next to four games because four teams loved C#. It appears because those four games are built in Unity, and Unity’s scripting language is C#.
The cascade: the engine decides
| UNITY | UNREAL | ROBLOX | IN-HOUSE ENGINE |
|---|---|---|---|
| C# | C++ (Verse in its creator tools) | Luau | C++ |
| Among Us · Subway Surfers · Pokémon GO · Free Fire · Genshin (Unity-based) | Fortnite · PUBG · Valorant | Roblox | GTA · Minecraft · Call of Duty · League of Legends · Candy Crush · Clash of Clans · Dota 2 · Counter-Strike 2 · Apex |
| Mobile and smaller teams, fastest to a first build | Big 3D and shooters, heaviest to learn | A platform: you build inside somebody else’s game | You are writing the engine, so you are in C++ by definition |
All twenty-two rows, as the card lists them
Every entry below is the card’s own, including the small grey notes it puts beside some languages.
| # | Game | Main language(s) | Engine |
|---|---|---|---|
| 01 | GTA: Vice City | C++ | RenderWare |
| 02 | GTA V | C++ | RAGE |
| 03 | GTA VI | Not confirmed | Not publicly confirmed |
| 04 | Minecraft (Java Ed.) | Java, C++ (native) | Custom engine |
| 05 | Minecraft (Bedrock) | C++ | Custom engine |
| 06 | Fortnite | C++, Verse (UEFN) | Unreal Engine |
| 07 | PUBG: Battlegrounds | C++, Python | Unreal Engine 4 |
| 08 | PUBG Mobile | C++, Lua (scripts) | Unreal Engine 4 |
| 09 | Call of Duty: Warzone | C++ | IW Engine |
| 10 | League of Legends | C++ (+ scripting) | Custom engine |
| 11 | Roblox | Luau (games), C++ (engine) | Roblox Engine |
| 12 | Genshin Impact | C++, C# (tools) | Custom (Unity-based) |
| 13 | Candy Crush Saga | C++ | King’s own engine |
| 14 | Clash of Clans | C++ | Supercell Titan |
| 15 | Free Fire | C++, C# | Unity (customised) |
| 16 | Among Us | C#, C++ (some) | Unity |
| 17 | Subway Surfers | C# | Unity |
| 18 | Pokémon GO | C# | Unity |
| 19 | Dota 2 | C++, Lua (scripts) | Source 2 |
| 20 | Counter-Strike 2 | C++ | Source 2 |
| 21 | Apex Legends | C++ | Source (modified) |
| 22 | Valorant | C++ | Unreal Engine 4 |
WATCH THE ORIGINAL — 45 SECONDS
All twenty-two rows with their languages and engines, and the footnote about several languages per game.
▶ The programming languages behind the world’s biggest games — BANI Academy on Facebook
Why most rows have two languages
The card’s footer says it in one sentence — most big games use several languages: one for the engine, others for tools and scripting — and the little grey annotations show you where. Scripts. Tools. Engine. Games. Native.
The reason is a trade every large program eventually makes. The engine has to be fast: it is drawing a frame sixteen milliseconds from now, every time, forever. So it is written in something that gives you control over memory and speed, and pays for that with difficulty. Meanwhile the content — a quest, a weapon’s behaviour, what happens when you press a button — changes every single day and is written by people who should not have to recompile an engine to adjust a number.
So the engine gets the fast language and the content gets an easy one, usually a scripting language bolted on top. Two rows on this card put it most clearly: a platform whose players build games in a simple scripting language while the engine underneath is C++, and a pair of games where the engine is C++ and the day-to-day behaviour is Lua.
That split matters to a beginner far more than the language names do. Almost nobody starts by writing an engine. Most people who “make games” spend their time in the easy half — scripting behaviour inside an engine somebody else built — and that is the half you should start in.
What do you actually want to make?
| What you want | The engine that fits | The language that follows | A first project that finishes |
|---|---|---|---|
| A small 2D or mobile game, alone | Unity | C# | Something that moves when you press a key — in a weekend |
| A 3D shooter or anything photoreal | Unreal | C++, with its visual scripting first | One room, one door, one working light switch |
| A game your friends can play today | Roblox | Luau | An obstacle course. Published the same evening |
| A job at a big studio | Whatever they already run | C++, almost certainly | A finished small game — studios read projects, not language lists |
| Tools for a team that makes games | Often the engine’s own language | C# or C++ | A script that saves somebody an hour a week |
| Understanding how games work | None of them yet | Any language you already know | A text game with no engine at all |
That ordering is the same one we argued for outside games entirely, where picking a language first is the slowest possible route to having built anything: Which Language Should I Learn First Is The Wrong Question. And it is the same cascade shape as the back end of a web stack, where one choice quietly fills in three boxes — One Map, Two Columns, And They Do Not Read The Same Way.
Four honest caveats
Row three is the best thing on the card. For the unreleased title it simply says not confirmed, twice. A chart that admits where the public information runs out is worth more than one that fills every cell to look complete — and almost every tool and tech chart we have taken apart on this blog would have guessed.
“Based on public sources; details change over time.” That is the card’s own second sentence and it is doing real work. Large games are rewritten, ported and re-engined over their lifetimes; a game that shipped on one engine a decade ago may not be running on it now. Treat each row as a reasonable public summary rather than a current internal fact.
A language is not a job, and C++ is not a starting point. The chart could easily be read as “learn C++ and you can build these”. In practice C++ is the language of engine and systems work, which is one of the harder places in software to start and one of the smallest parts of most game teams by headcount. Starting with the engine’s easy half gets you a finished small thing, and a finished small thing is what gets you further — the case for narrowing like that is in Pick One Per Stage And Learn It Properly.
The engine column hides the rest of the team. No column here covers art, animation, audio, level design, networking, QA or live operations, and on a game of this size those are most of the people. A language chart is a map of one department, which is worth remembering before concluding that a career in games means writing code.
Questions people ask
Why do so many studios write their own engine? Because at that scale the engine is the product’s advantage — open worlds, physics, netcode at a particular scale. It is also enormously expensive, which is exactly why everyone else uses a shared one.
Is C# a worse language because it is “only” Unity? No. It is the language four shipped games on this chart are written in, including two with hundreds of millions of players. “Fewer rows” means fewer engines, not less capable.
Should I learn Lua or Luau? If you are building inside a platform or an engine that uses one, yes, and it will take days rather than months. As a general-purpose first language, no — learn it when the engine hands it to you.
I make videos, not games. Is any of this useful? One idea transfers exactly. Your engine is your editor and your pipeline; your scripting is the templates and presets you build on top. Nobody’s audience has ever cared which of those they used, only whether the thing worked.
Read the third column
Twenty-two games, three columns, and the one everybody reads is the one that barely changes. C++ across almost the whole chart is not a recommendation — it is a description of where performance-critical code lives, and it has been true for thirty years.
The engine column is the one with the decisions in it: who wrote it, what it is good at, who it is for, and which language it hands you when you open it. Choose there, and the middle column fills itself in — which is why nobody on this chart ever had to choose a language in the first place.
Learning a lot does not make anyone good. Doing a lot does.
If you want a deadline rather than another saved chart, we run a free challenge — there is no barrier to entry, only a commitment fee that is refunded when you finish. It exists because a deadline ships a tiny finished game, and a language list ships nothing.
Which row surprised you most — and which engine would you actually open this weekend? Tell us in the comments under the original reel.
More on building a channel for a global audience at mmoyoutube.com.



